package com.swak.reactivex.p2p;

import java.util.Set;

import com.swak.exception.RemotingException;
import com.swak.reactivex.transport.Channel;

/**
 * 端点
 * 
 * @author 618lf
 */
@Deprecated
public interface Peer {

	PeerID peerID();

	Set<PeerID> peers();

	void leave() throws RemotingException;

	void close();

	/**
	 * 广播组： 通过组可以获得所有的客户端
	 * 
	 * @return
	 */
	Group group();

	/**
	 * 查找连接：真实的可通讯
	 * 
	 * @param url
	 * @return
	 */
	Channel lookup(PeerID peerID);

	/**
	 * 广播数据
	 * 
	 * @param message 数据
	 * @throws RemotingException
	 */
	void send(Object message) throws RemotingException;

	/**
	 * 广播数据
	 * 
	 * @param message 数据
	 * @throws RemotingException
	 */
	void send(Object message, boolean sent) throws RemotingException;
}